use chrono::{NaiveDate, ParseError};

pub fn date_is_query_format(date_str: &str) -> Result<(), String> {
    NaiveDate::parse_from_str(date_str, "%Y-%m-%d")
        .map(|_| ()) // 成功时返回空元组
        .map_err(|err: ParseError| {
            // 直接将错误转换为字符串，兼容所有版本
            let err_msg = err.to_string();
            // 简单判断错误类型，提供更友好的信息
            if err_msg.contains("month") {
                "无效的月份（必须是 01-12）".to_string()
            } else if err_msg.contains("day") {
                "无效的日期（超过当月最大天数）".to_string()
            } else if err_msg.contains("year") {
                "无效的年份（必须是 4 位数字）".to_string()
            } else if err_msg.contains("format") {
                "格式错误，正确格式应为 YYYY-MM-DD（例如 2025-09-01）".to_string()
            } else {
                format!("日期无效：{}", err_msg)
            }
        })
}
